<?php
/**
 * User: ppjun378
 * Data: 2019/01/22
 * Time: 18:00
 */
namespace App\Service;

use App\Model\LoginPermissions;
use App\Model\Pictures;
use App\Model\Resumes;
use App\Service\EducationAndTrainingsService;
use App\Service\FamilySituationsService;
use App\Service\ResumesService;
use App\Service\WorkExperiencesService;
use App\Service\WxusersService;
use Validator;

class ResumesService
{
    /**
     * 获取数据
     * @param $request
     * @return mixed
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function dataList($request)
    {
        $token = $request->input('token', '');
        $login_type_id = $request->input('login_type_id', 1);
        if (empty($token)) {
            $list['code'] = 1;
            $list['msg'] = 'error:用户token不能为空';
            return $list;
        }

        // 查询微信用户ID
        $wxuser_id = WxusersService::getWxuserId($token);

        if (empty($wxuser_id)) {
            $list['code'] = 1;
            $list['msg'] = 'error:请填写正确的token！';
            return $list;
        }

        $size = $request->input('pagenum', 10); // 每页显示的数据条
        $page = $request->input('page', 1);

        // 查询状态
        $status = $request->input('status', '');
        $status = empty($status) ? 0 : $status;

        $fields = [
            'resumes.id',
            'jobs', //应聘岗位
            'salary_requirements', //薪资要求
            'date_of_filling', //填表日期
            'wxuser_id', //微信用户id
            'username', // 姓名
            'sex', // 性别
            'constellation', // 星座
            'chinese_zodiac', // 生肖
            // 'head_portait', // 头像
        ];

        $data = Resumes::select($fields)
            ->join('resumes_infos', 'resumes.id', '=', 'resumes_infos.resume_id')
            ->where(function ($query) use ($status, $login_type_id, $wxuser_id) {
                // hr
                if ($login_type_id == 1) {
                    //0: 待审核(默认) 1: 待评估 2: 待复评
                    if (in_array($status, array(0, 1, 2))) {
                        $query->where('status', $status);
                        //人才库: 3：待审核 4: 聘用 5: 候选 6: 储备 -1: 人才库
                    } else {
                        $query->whereNotIn('status', ['0', '1', '2']);
                    }

                    // 用人部门
                } elseif ($login_type_id == 2) {
                    //2: 待审核(默认)
                    if (in_array($status, array(2))) {
                        $query->where('status', $status);
                        //人才库：3：待审核 4: 聘用 5: 候选 6: 储备
                    } else {
                        $query->whereNotIn('status', ['-1', '0', '1', '2']);
                    }

                    // 经理及boss
                } elseif ($login_type_id == 3) {
                    // 判断是否为boss
                    $info = LoginPermissions::select(['id'])
                        ->where('login_type_id', '4')
                        ->where('wxuser_id', $wxuser_id)
                        ->first();
                    // 是boss
                    if ($info) {
                        // -3: 待审核(默认)
                        if (in_array($status, array('-3'))) {
                            $query->where('status', $status);
                            // 人才库：4聘用
                        } else {
                            $query->whereIn('status', ['4']);
                        }
                        // 总经理
                    } else {
                        // 3:待审核
                        if (in_array($status, array(3))) {
                            $query->where('status', $status);
                            // 人才库：4: 聘用 5: 候选 6: 储备
                        } else {
                            $query->whereNotIn('status', ['-1', '0', '1', '2', '3']);
                        }
                    }
                }
            })
            ->orderBy('resumes.id', 'desc')
            ->paginate($size);

        foreach ($data as $key => $val) {
            $field = ['img_url as head_portait'];
            $info = Pictures::select($field)
                ->where('img_type', 2)
                ->where('resume_id', $val['id'])
                ->first();
            $data[$key]['head_protait'] = empty($info) ? 'http://img.inforward.com.cn/applet/upload.png' : $info['head_portait'];
        }

        $list['code'] = 0;
        $list['msg'] = '查询成功';
        $data = empty($data) ? array() : $data->toArray();
        $list['count'] = $data['total'];
        $list['data'] = $data['data'];
        return $list;

    }

    /**
     * 获取详情
     * @param int $id
     * @return mixed
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function getDetail($request)
    {
        $token = $request->input('token', '');
        $login_type_id = $request->input('login_type_id', 1);
        if (empty($token)) {
            $list['code'] = 1;
            $list['msg'] = 'error:用户token不能为空';
            return $list;
        }

        // 查询微信用户ID
        $wxuser_id = WxusersService::getWxuserId($token);

        if (empty($wxuser_id)) {
            $list['code'] = 1;
            $list['msg'] = 'error:请填写正确的token！';
            return $list;
        }

        $id = $request->input('resume_id', '');
        $fields = [
            'resumes.id',
            'jobs', //应聘岗位
            'salary_requirements', //薪资要求
            'date_of_filling', //填表日期
            'wxuser_id', //微信用户id
            'username', // 姓名
            'sex', // 性别
            'political_landscape', // 政治面貌
            'examination_situation', // 婚育情况
            'national', // 民族
            'constellation', // 星座
            'chinese_zodiac', // 生肖
            'weight', // 体重
            'height', // 身高
            'native_place', // 籍贯
            'mobile_phone', // 联系方式
            'wechat_id', // 微信号
            'identification_number', // 身份证号码
            'arrival_time', // 到岗时间
            'education_background', // 学历
            'degree', // 学位
            'professional', // 专业
            'current_residential_address', // 现居住地点
            'emergency_contact', // 紧急联系人姓名
            'emergency_contact_number', // 紧急联系人电话
        ];
        $data = Resumes::select($fields)
            ->leftJoin('resumes_infos', 'resumes.id', '=', 'resumes_infos.resume_id')
            ->where('resumes.id', $id)
            ->first();

        $data = empty($data) ? array() : $data->toArray();

        //家庭情况
        $data['family_situations'] = FamilySituationsService::dataList($id);
        // 主要工作经历
        $data['work_experiences'] = WorkExperiencesService::dataList($id);
        // 教育及培训
        $data['education_and_trainings'] = EducationAndTrainingsService::dataList($id);
        // 图片及附件
        $pic_data = PicturesService::dataList($request);
        $data = array_merge($data, $pic_data['data']);

        // echo '<pre>';
        // print_r($data);
        // echo '</pre>';
        $list['code'] = 0;
        $list['msg'] = '查询成功';
        $list['data'] = $data;

        return $list;

    }

    /**
     * 添加/更新
     * @param $request
     * @return mixed
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function store($request)
    {
        $validator = Validator::make($request->all(), [
            'mobile_phone' => 'required|regex:/^1[34578][0-9]{9}$/', //联系电话
            // 'token' => 'required', //用户token
        ]);
        if ($validator->fails()) {
            $list['code'] = 1;
            $list['msg'] = $validator->getMessageBag()->toArray();
            return $list;
        }

        $token = $request->input('token', '');
        $qr_code = $request->input('code', '');
        $mobile_phone = $request->input('mobile_phone', '');

        if (empty($token)) {
            $list['code'] = 1;
            $list['msg'] = 'error:用户token不能为空';
            return $list;
        }

        // 查询微信用户ID
        $wxuser_id = WxusersService::getWxuserId($token);

        if (empty($wxuser_id)) {
            $list['code'] = 1;
            $list['msg'] = 'error:请填写正确的token！';
            return $list;
        }

        // 查询微信用户ID
        // $wxuser_id = WxusersService::getWxuserId($token);

        // if (empty($wxuser_id)) {
        //     $list['code'] = 1;
        //     $list['msg'] = 'error:请填写正确的token！';
        //     return $list;
        // }

        $is_true = SmsTempsService::checkCode($mobile_phone, $qr_code);
        if (empty($mobile_phone) || empty($is_true)) {
            $list['code'] = 1;
            $list['msg'] = 'error:手机号为空或验证码输入错误';
            return $list;
        }

        // print_r($request);exit;
        $data = $request->all();
        $id = $request->input('id', '');
        $map = [];
        $fields = [
            'jobs', //应聘岗位
            'salary_requirements', //薪资要求
            'date_of_filling', //填表日期
            'wxuser_id', //微信用户id
        ];

        foreach ($data as $k => $v) {
            if ($v === null) {$v = '';}
            if (in_array($k, $fields) && !empty($v)) {
                $map[$k] = $v;
            }
        }

        $data_exist = Resumes::where('id', $id)->first();
        if ($id && $data_exist) {
            // 更新信息
            $result = Resumes::where('id', $id)->update($map);
        } else {
            // 添加信息
            $result = Resumes::create($map);
            // 新增的id
            $id = $result->id;
            // $id = 2;
            if ($id) {
                ResumesInfosService::store($request, $id);
                FamilySituationsService::store($request, $id);
                EducationAndTrainingsService::store($request, $id);
                WorkExperiencesService::store($request, $id);
            }
        }
        return $id;

    }

    /**
     * 更改(审核）
     * @param $request
     * @return $bool
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function save($request)
    {
        $token = $request->input('token', '');
        $login_type_id = $request->input('login_type_id', 1);
        if (empty($token)) {
            $list['code'] = 1;
            $list['msg'] = 'error:用户token不能为空';
            return $list;
        }

        // 查询微信用户ID
        $wxuser_id = WxusersService::getWxuserId($token);

        if (empty($wxuser_id)) {
            $list['code'] = 1;
            $list['msg'] = 'error:请填写正确的token！';
            return $list;
        }

        $id = $request->input('resume_id', '');
        $status = $request->input('status', '');

        $data_exist = Resumes::where('id', $id)->first();
        if ($id && $data_exist) {
            // 更新状态
            $result = Resumes::where('id', $id)->update(['status' => $status]);
        } else {
            return false;
        }

        return $result;

    }

    /**
     * 删除
     * @param $request
     * @return bool\Intervention
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function destory($request)
    {
        $id = $request->input('id', '');

        $res = Resumes::destory($id);
        if ($res > 0) {
            return $res;
        } else {
            return false;
        }
    }

    /**
     * 恢复删除
     * @param $int $id
     * @return mixed
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function restore($request)
    {
        $id = $request->input('id', '');
        $res = Resumes::where('id', $id)->restore();
        return $res;
    }
}
